// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
// #include <assert.h>
//
// typedef struct SqList {
//     int* data;
//     int length;
//     int maxsize;
// }SqList;
//
// void InitSQ(SqList* L) {
//     L->data=NULL;
//     L->length=L->maxsize=0;
// }
//
// void Full(SqList* L) {
//     if(L->length==L->maxsize) {
//         int NewLength=L->length==0?4:2*L->maxsize;
//         int* tmp=(int*)realloc(L->data,sizeof(int)*NewLength);
//         if(tmp==NULL) {
//             exit(1);
//         }
//         L->data=tmp;
//         L->maxsize=NewLength;
//     }
// }
//
// void InsertBack(SqList* L, int elem) {
//     if (L == NULL) return;
//     Full(L);
//     L->data[L->length] = elem;
//     L->length++;
// }
//
// void Print(SqList* L) {
//     for(int i=0;i<L->length;i++) {
//         printf("%d ",L->data[i]);
//     }
//     printf("\n");
// }
//
// void Destroy(SqList* L) {
//     if(L == NULL) return;
//     free(L->data);
//     L->data = NULL;
//     L->length = L->maxsize = 0;
// }
//
// int compare(const void* a, const void* b) {
//     return (*(int*)a - *(int*)b);
// }
//
// int MainElem(const SqList* L) {
//     assert(L&&L->data);
//     //先按照从小到大排序
//     qsort(L->data, L->length, sizeof(int), compare);
//     //声明一个临时变量，记录重复元素，如果记录的个数大于1/2表长，则为主元素，否则返回-1
//     int count=1;//记录当前出现次数
//     int maxcount=1;//最多出现次数
//     int x=L->data[0];//主元素
//     for(int i=1;i<L->length;i++) {
//         if(L->data[i-1]==L->data[i]) {
//             count++;
//             if(count>maxcount) {
//                 maxcount=count;//记录最大出现次数，因为count会更新
//                 x=L->data[i];//记录主元素
//             }
//         }else {
//             count=1;
//         }
//     }
//     if(maxcount>L->length/2) {
//         return x;
//     }else {
//         return -1;
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     SqList L;
//     InitSQ(&L);
//     InsertBack(&L,3);
//     InsertBack(&L,3);
//     InsertBack(&L,2);
//     InsertBack(&L,4);
//     InsertBack(&L,3);
//     InsertBack(&L,3);
//     InsertBack(&L,3);
//     InsertBack(&L,9);
//     int num=MainElem(&L);
//     if(num!=-1) {
//         printf("主元素为:%d\n",num);
//     }else {
//         printf("无主元素\n");
//     }
//     Destroy(&L);
//     return 0;
// }